#ifndef HSERIALPORT_H
#define HSERIALPORT_H

#include <QThread>
#include <QTimer>
#include <QSerialPort>
#include <QSerialPortInfo>

class HSerialPort : public QThread
{
    Q_OBJECT
public:
    HSerialPort();

    // virtual void setup(PortSettings serial_config);     // 配置串口参数
    bool open(QString port);
    void close();
    virtual int  write(QByteArray &ucDataArray);        // 写数据

    // 是否使用外部时钟
    void useExternalClock(bool bUseXCLK = false){ m_bUseXCLK = bUseXCLK;}
    quint64 getTimeStamp();//获取时间戳

public slots:
    // 同步时间，仅在使用外部时钟时有效
    void on_synchronizeTime(quint64 dt){
        if(m_bUseXCLK){
            XCLK = dt;
        }
    }

    // 获取当前可用的串口
    QStringList getAvailablePorts();

signals:
    //上行/下行原始数据
    void signal_initialData(bool bDir, QByteArray ucDataArray, quint64 dt);

protected:
    bool m_bStopped;
    // PortSettings   m_serialConfig;                      // 串口参数
    QSerialPort *m_pPort;                           // 串口句柄
    QSerialPortInfo *m_pSerialPortInfo;               // 探测可用的串口设备

    bool    m_bUseXCLK=false;//使用外部时钟
    qint64  XCLK;//外部时钟

    virtual void run();
};

#endif // HSERIALPORT_H
